package com.huike.web.controller.clues;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.dto.TbActivityDTO;
import com.huike.clues.service.TbActivityService;
import com.huike.common.core.controller.BaseController;
import com.huike.common.core.domain.AjaxResult;
import com.huike.common.core.domain.BaseEntity;
import com.huike.common.core.page.TableDataInfo;
import com.huike.common.utils.bean.BeanUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.beans.beancontext.BeanContext;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static com.github.pagehelper.page.PageMethod.startPage;

/**
 * ZhouYang
 * 活动管理Controller
 * @date 2023-10-15
 */

@RestController
@Slf4j
@RequiredArgsConstructor
@Api(tags = "活动相关接口")
@RequestMapping("/clues/activity")
public class TbActivityController extends BaseController {

    private final TbActivityService tbActivityService;


    /**
     * 处理查询活动管理列表请求
     * @param tbActivityDTO
     * @return
     */
    @ApiOperation("查询活动管理列表接口")
    @GetMapping("/list")
    public TableDataInfo list(TbActivityDTO tbActivityDTO) {
        startPage();
        log.info("开始执行查询活动管理列表接口:{}",tbActivityDTO);
        List<TbActivityDTO> activityList = tbActivityService.selectTbActivityList(tbActivityDTO);
        return getDataTable(activityList);
    }

    /**
     *处理渠道活动列表请求
     * @param channel
     * @return
     */
    @ApiOperation("渠道活动列表接口")
    @GetMapping("/listselect/{channel}")
    private AjaxResult channel(@PathVariable("channel") String channel) {

        List<TbActivityDTO> list = tbActivityService.selectByChannel(channel);
        return AjaxResult.success(list);


    }

    /**
     * 处理删除活动管理请求
     * @param ids
     * @return
     */
    @ApiOperation("删除活动管理接口")
    @DeleteMapping("{ids}")
    public AjaxResult Delete(@PathVariable Long ids){
        log.info("开始执行删除活动管理接口....");
        tbActivityService.deleteTbActivityByIds(ids);
        return AjaxResult.success();
    }

    /**
     * 处理新增活动管理请求
     * @param tbActivityDTO
     * @return
     */
    @ApiOperation("新增活动管理接口")
    @PostMapping
    public AjaxResult addTbActivity(@RequestBody TbActivityDTO tbActivityDTO){
        log.info("开始执行活动管理接口:{}",tbActivityDTO);
        tbActivityService.insertTbActivity(tbActivityDTO);
        return AjaxResult.success();
    }


    /**
     * 处理获取活动管理详细信息请求数据回显
     * @param id
     * @return
     */
    @ApiOperation("获取活动管理详细信息接口")
    @GetMapping("{id}")
    public AjaxResult<TbActivityDTO>ActivityDetails(@PathVariable Long id){
        log.info("开始执行获取活动管理详细信息接口:{}",id);
        TbActivityDTO tbActivityDTO = tbActivityService.selectTbActivityById(id);
        return AjaxResult.success(tbActivityDTO);
    }

    /**
     *处理修改活动请求
     * @param tbActivityDTO
     * @return
     */
    @ApiOperation("修改活动管理")
    @PutMapping
    public AjaxResult updateActivity(@RequestBody TbActivityDTO tbActivityDTO){
        log.info("开始执行修改活动接口:{}",tbActivityDTO);
        tbActivityService.updateTbActivity(tbActivityDTO);
        return AjaxResult.success();
    }
}
